用户可以在样式表中添加,或添加@import 指令和规则。
一旦获得对某个 styleSheet 对象的引用,就可以使用 addImport()方法向该样式表中添加一个@import 指令,语法格式如下:
iIndex = styleSheet.addImport(sURL [, iIndexRequest])
参数 sURL 是要导入样式表的 URL 地址。
参数 iIndexRequest 是可选的,为一个整数,用来定义添加的@import 指令在 styleSheet.imports 列表中的索引位置。如果忽略该参数,那么@import 指令就被追加到列表的末尾。
该方法的返回值是添加的@import 指令在 styleSheet.imports 列表中实际的索引位置。
使用索引号,还可以使用 removeImport()方法从 styleSheet.imports 列表中删除一个@import 指令,该方法的语法格式如下:
styleSheet.removeImport(iIndex);
向样式表中添加一个规则可以使用 addRule()方法,该方法的语法格式如下:
iIndex = styleSheet.addRule(sSelector,sStyle[,iIndexRequest])
参数 sSelector 是一个字符串,用来定义新规则的选择符。
参数 sStyle 用来定义样式,它是一个字符串,而非 style 对象。可以像为对象定义内联样式那样定义该参数,例如下面的代码:
var iIndex = styleSheet.addRule('div', 'color:#FF0000;font-weight:bold;');
返回值是新增样式规则的索引号。
参数 iIndexRequest 是可选的,默认值为-1。
使用索引号,还可以使用 removeRule()方法从 styleSheet.imports 列表中删除一个规则,该方法的语法格式如下:
styleSheet.removeRule([iIndex]);
使用 styleSheet 对象的 media 属性,可以获取某个样式表所指定要用于的介质,也可以使用该属性将样式表指定给要使用的介质。该属性有3个值可供选择:
例如下面的代码,首先获取样式表,而后设置该样式表适用的介质是计算机屏幕:
var oStyleSheet = document.styleSheets[0]; // 获取 style 元素定义的样式表
oStyleSheet.media = 'screen';
@page 规则用来定义页面的样式,要处理该样式,可以使用 styleSheet 对象的 pages 属性返回该样式表中所有的@page 规则定义。这是一个列表,对象中每个元素就是一个@page 规则,每个@page 规则使用 page 对象来描述。
page 对象有两个属性成员可用:
不过,对于每个选择符中定义的规则,用户不可以获取,也就不能访问样式。如果要访问样式,可以使用 styleSheet 对象的 cssText 属性获得该样式表中规则和样式的文本表述,也可以使用该属性改变样式表中的规则和样式。例如下面的代码:
<head>
<style type="text/css">
#page:left {
margin-left: 4cm;
margin-right: 3cm;
}
#page:right {
margin-left: 4cm;
margin-right: 3cm;
}
</style>
</head>
<body>
<script>
var oStyleSheet = document.styleSheets[0];
//获取 style 元素定义的样式表
alert(oStyleSheet.cssText);
</script>
</body>